<?php

namespace app\api\controller;
use app\api\controller\Controller;
use think\Db;

/**
 * @title 订单模块
 */
class Product extends Controller
{
    /**
     * @title 商品价格查询接口
     * @dec 查询供应商系统商品价格getSellPrice
     * @method POST
     * 
     * @param string $token 访问令牌
     * @param string $supplierCode 采购平台提供的供应商标识
     * @param string $thirdSkuIds 供应商商品编号skuId的集合，最多100条
     * 
     * @return boolean $success 1 true成功false失败
     * @return string $resultCode 1 异常代码 0正常 1token失效 2非空项为空
     * @return string $resultMsg 0 信息描述
     * @return string $List<skuInfo> 1 商品价格信息集合
     * 
     * @return string $thirdSkuId 1 商品skuId
     * @return bigDecimal $sellPrice 1 商品售卖价(shop_price)编号不在则返回-1
     * @return bigDecimal $marketPrice 1 商品市场价(market_price)编号不在则返回-1
     */
    public function getSellPrice()
    {
        $d = $this->params;
        $goods = Db::table('ecs_goods')
                    ->field(['goods_id thirdSkuId','shop_price sellPrice','market_price marketPrice'])
                    ->where('goods_id','in',$d['thirdSkuIds'])
                    ->select();
        // 编号不在返回-1
        $skuId = array_column($goods,'thirdSkuId');
        $diffId = array_diff($d['thirdSkuIds'],$skuId);
        $nullNumber = [];
        foreach($diffId as $kk => $vv){
            $nullNumber[$kk]['thirdSkuId'] = (int) $vv;
            $nullNumber[$kk]['shop_price'] = -1;
            $nullNumber[$kk]['market_price'] = -1;
        }
        $result = array_merge($goods,$nullNumber);
        return api_return($result);
      
    }
    
    /**
     * @title 商品库存查询接口
     * @des 查询供应商商品库存
     * @method POST
     * 
     * @param string $token 访问令牌
     * @param string $supplierCode 采购平台提供的供应商标识
     * @param string $provinceId 省级编码
     * @param string $cityId 市级编码
     * @param string $countyId 县区编码
     * @param string $address 包含省市县区的详细地址
     * @param string $thirdSkuIds 第三方商品编号列表
     * 
     * @return boolean $success 1 true成功false失败
     * @return string $resultCode 1 异常代码 0正常 1token失效 2非空项为空
     * @return string $resultMsg 0 信息描述
     * @return string $List<StockInfo> 1 商品价格信息集合
     * 
     * @return string $thirdSukId 1 商品skuId
     * @return Integer $skuStock 1 库存(goods_number)当商品库存在200以下时返回真是库存，当商品库存大于200时，返回-1.如果传入商品编号不在商品池中，则可售库存为0
     */
    public function getStock()
    {
        // ####################少了根据省市区查找库存######################
        $d = $this->params;
        $goods = Db::table('ecs_goods')
                    ->field(['goods_id thirdSkuId','goods_number skuStock'])
                    ->where('goods_id','in',$d['thirdSkuIds'])
                    ->select();
        // 当商品库存在200以下时返回真是库存，当商品库存大于200时，返回-1
        foreach($goods as $k=>&$v){   // &符会影响到下面的$v变量
            if($v['skuStock']>200){
                $v['skuStock'] = -1;
            }
        }
        $skuId = array_column($goods,'thirdSkuId');
        $diffId = array_diff($d['thirdSkuIds'],$skuId);
        $nullNumber = [];
        foreach($diffId as $kk => $vv){
            $nullNumber[$kk]['thirdSkuId'] = (int) $vv;
            $nullNumber[$kk]['skuStock'] = (int) 0;
        }
        $result = array_merge($goods,$nullNumber);
        return api_return($result);
    }

    /**
     * @title 商品可售查询接口
     * @des 查询供应商商品区域是否可售
     * @method POST
     * 
     * @param string $token 访问令牌
     * @param string $supplierCode 采购平台提供的供应商标识
     * @param string $provinceId 省级编码
     * @param string $cityId 市级编码
     * @param string $countyId 县区编码
     * @param string $address 包含省市县区的详细地址
     * @param List<SkuInfo> thirdSkus 商品信息列表
     *      @param string $thirdSkuId 第三方商品编号
     *      @param string $thirdSkuId 欲购买数量
     * 
     * @return List<CheckSaleResult> $result  查询商品可售结果
     * @return bigDecimal $sellPrice  售卖价，不可售返回-1
     * @return bigDecimal $marketPrice 市场价，不可售返回-1
     * @return integer $saleState 1:可售；0：不可售
     * @return string $cause 不可售原因。如果是可售商品，此字段返回为空
     * 
     */
    public function saleCheck()
    {
        // ####################少了根据省市区#####################
        $d = $this->params;
    }

    /**
     * @title 商品上下架通知接口
     * @des 商品上下架通知接口。平台运营人员、供应商在平台操作上下架商品时通过接口通知供应商。
     * @method POST
     * 
     * @param string $token 访问令牌
     * @param string $supplierCode 采购平台提供的供应商标识
     * @param list<SkuInfo> thirdSkus 需要上下架的商品编码的集合
     * @param integer $type 操作类型：1：上架；2：下架；
     * @param string $tupeMsg 操作描述。如type=2时，必须提供下架原因；
     * 
     * @return List<CheckSaleResult> result  查询商品可售结果
     * 
     */
    public function shelfUpdateNotice()
    {
        // ####################少了商品区域#####################
        $d = $this->params;
        
        // $d['type'];
        // $d['thirdSkus'];
        // $d['typeMsg'];
  
        // return api_return(null);
      
    }

}